home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-68k-src / machines / amiga68k / libsrc / stdio / ungetc.c < prev    next >
C/C++ Source or Header  |  1999-01-01  |  657b  |  23 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int ungetc(int c,FILE *f)
  5. {
  6.     if(!f) return(EOF);
  7.     if((f->flags&(_READABLE|_WRITE|_ERR|_EOF))!=_READABLE) return(EOF);
  8.     f->flags|=_READ;
  9.     if(!f->bufsize){if(f->flags&_UNBUF) f->bufsize=1; else f->bufsize=BUFSIZ;}
  10.     if(!f->base){
  11.         if(!(f->base=(char *)malloc(f->bufsize+1)+1))
  12.             return(EOF);
  13.         f->pointer=f->base;
  14.     }
  15.     if(f->pointer<f->base){
  16.     /*  Buffer voll und bereits ein Zeichen reingestopft, also wird es  */
  17.     /*  ueberschrieben                                                  */
  18.         return(*f->pointer=c);
  19.     }
  20.     f->count++;
  21.     return(*--f->pointer=c);
  22. }
  23.